home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #5 & #6 / Amiga Plus CD - 1995 - No. 5 and 6.iso / pd / netz / term / extras / source / term-source.lha / EmulationPanel.c < prev    next >
C/C++ Source or Header  |  1995-07-01  |  18KB  |  819 lines

  1. /*
  2. **    EmulationPanel.c
  3. **
  4. **    Editing panel for emulation configuration
  5. **
  6. **    Copyright © 1990-1995 by Olaf `Olsen' Barthel
  7. **        All Rights Reserved
  8. */
  9.  
  10. #include "termGlobal.h"
  11.  
  12. enum    {    GAD_USE=1000, GAD_CANCEL, GAD_DEFAULT,
  13.         GAD_SCROLL, GAD_JUMP_SCROLL,
  14.         GAD_EDITPENS, GAD_STDPENS,
  15.         GAD_PAGER,GAD_PAGEGROUP
  16.     };
  17.  
  18. STATIC BOOLEAN __regargs
  19. PenPanel(struct Window *Parent,struct Configuration *Config,WORD Depth)
  20. {
  21.     struct LayoutHandle    *Handle;
  22.     UWORD             Pen[16];
  23.     UBYTE             Attribute[4];
  24.     UBYTE             Colours[16];
  25.     WORD             i;
  26.     BOOLEAN             Result = FALSE;
  27.  
  28.     for(i = 0 ; i < (1L << Depth) ; i++)
  29.         Colours[i] = MappedPens[0][i];
  30.  
  31.     CopyMem(Config -> EmulationConfig -> Pens,Pen,sizeof(Pen));
  32.     CopyMem(Config -> EmulationConfig -> Attributes,Attribute,sizeof(Attribute));
  33.  
  34.     if(Handle = LT_CreateHandleTags(Parent -> WScreen,
  35.         LH_LocaleHook,    &LocaleHook,
  36.         LH_ExactClone,    TRUE,
  37.         LH_ExitFlush,    FALSE,
  38.     TAG_DONE))
  39.     {
  40.         struct Window *PanelWindow;
  41.  
  42.         LT_New(Handle,
  43.             LA_Type,    VERTICAL_KIND,
  44.         TAG_DONE);
  45.         {
  46.             LT_New(Handle,
  47.                 LA_Type,    HORIZONTAL_KIND,
  48.             TAG_DONE);
  49.             {
  50.                 LT_New(Handle,
  51.                     LA_Type,    VERTICAL_KIND,
  52.                     LA_LabelID,    MSG_PENPANEL_DRAWING_PENS_TXT,
  53.                 TAG_DONE);
  54.                 {
  55.                     LT_New(Handle,
  56.                         LA_Type,        PALETTE_KIND,
  57.                         LA_LabelText,        "_0",
  58.                         GTPA_Depth,        Depth,
  59.                         GTPA_ColorTable,    Colours,
  60.                         LAPA_SmallPalette,    TRUE,
  61.                         LA_UWORD,        &Pen[0],
  62.                     TAG_DONE);
  63.  
  64.                     LT_New(Handle,
  65.                         LA_Type,        PALETTE_KIND,
  66.                         LA_LabelText,        "_1",
  67.                         GTPA_Depth,        Depth,
  68.                         GTPA_ColorTable,    Colours,
  69.                         LAPA_SmallPalette,    TRUE,
  70.                         LA_UWORD,        &Pen[1],
  71.                     TAG_DONE);
  72.  
  73.                     if(Depth > 1)
  74.                     {
  75.                         LT_New(Handle,
  76.                             LA_Type,        PALETTE_KIND,
  77.                             LA_LabelText,        "_2",
  78.                             GTPA_Depth,        Depth,
  79.                             GTPA_ColorTable,    Colours,
  80.                             LAPA_SmallPalette,    TRUE,
  81.                             LA_UWORD,        &Pen[2],
  82.                         TAG_DONE);
  83.  
  84.                         LT_New(Handle,
  85.                             LA_Type,        PALETTE_KIND,
  86.                             LA_LabelText,        "_3",
  87.                             GTPA_Depth,        Depth,
  88.                             GTPA_ColorTable,    Colours,
  89.                             LAPA_SmallPalette,    TRUE,
  90.                             LA_UWORD,        &Pen[3],
  91.                         TAG_DONE);
  92.                     }
  93.  
  94.                     if(Depth > 2)
  95.                     {
  96.                         LT_New(Handle,
  97.                             LA_Type,        PALETTE_KIND,
  98.                             LA_LabelText,        "_4",
  99.                             GTPA_Depth,        Depth,
  100.                             GTPA_ColorTable,    Colours,
  101.                             LAPA_SmallPalette,    TRUE,
  102.                             LA_UWORD,        &Pen[4],
  103.                         TAG_DONE);
  104.  
  105.                         LT_New(Handle,
  106.                             LA_Type,        PALETTE_KIND,
  107.                             LA_LabelText,        "_5",
  108.                             GTPA_Depth,        Depth,
  109.                             GTPA_ColorTable,    Colours,
  110.                             LAPA_SmallPalette,    TRUE,
  111.                             LA_UWORD,        &Pen[5],
  112.                         TAG_DONE);
  113.  
  114.                         LT_New(Handle,
  115.                             LA_Type,        PALETTE_KIND,
  116.                             LA_LabelText,        "_6",
  117.                             GTPA_Depth,        Depth,
  118.                             GTPA_ColorTable,    Colours,
  119.                             LAPA_SmallPalette,    TRUE,
  120.                             LA_UWORD,        &Pen[6],
  121.                         TAG_DONE);
  122.  
  123.                         LT_New(Handle,
  124.                             LA_Type,        PALETTE_KIND,
  125.                             LA_LabelText,        "_7",
  126.                             GTPA_Depth,        Depth,
  127.                             GTPA_ColorTable,    Colours,
  128.                             LAPA_SmallPalette,    TRUE,
  129.                             LA_UWORD,        &Pen[7],
  130.                         TAG_DONE);
  131.                     }
  132.  
  133.                     LT_EndGroup(Handle);
  134.                 }
  135.  
  136.                 LT_New(Handle,
  137.                     LA_Type,    VERTICAL_KIND,
  138.                     LA_LabelID,    MSG_ATTRIBUTES_TXT,
  139.                 TAG_DONE);
  140.                 {
  141.                     LT_New(Handle,
  142.                         LA_Type,    CYCLE_KIND,
  143.                         LA_LabelID,    MSG_ATTRIBUTE1_GAD,
  144.                         LACY_FirstLabel,MSG_ATTRIBUTE1_GAD,
  145.                         LACY_LastLabel,    MSG_ATTRIBUTE5_GAD,
  146.                         LA_UBYTE,    &Attribute[TEXTATTR_UNDERLINE],
  147.                     TAG_DONE);
  148.  
  149.                     LT_New(Handle,
  150.                         LA_Type,    CYCLE_KIND,
  151.                         LA_LabelID,    MSG_ATTRIBUTE2_GAD,
  152.                         LACY_FirstLabel,MSG_ATTRIBUTE1_GAD,
  153.                         LACY_LastLabel,    MSG_ATTRIBUTE5_GAD,
  154.                         LA_UBYTE,    &Attribute[TEXTATTR_HIGHLIGHT],
  155.                     TAG_DONE);
  156.  
  157.                     LT_New(Handle,
  158.                         LA_Type,    CYCLE_KIND,
  159.                         LA_LabelID,    MSG_ATTRIBUTE3_GAD,
  160.                         LACY_FirstLabel,MSG_ATTRIBUTE1_GAD,
  161.                         LACY_LastLabel,    MSG_ATTRIBUTE5_GAD,
  162.                         LA_UBYTE,    &Attribute[TEXTATTR_BLINK],
  163.                     TAG_DONE);
  164.  
  165.                     LT_New(Handle,
  166.                         LA_Type,    CYCLE_KIND,
  167.                         LA_LabelID,    MSG_ATTRIBUTE4_GAD,
  168.                         LACY_FirstLabel,MSG_ATTRIBUTE1_GAD,
  169.                         LACY_LastLabel,    MSG_ATTRIBUTE5_GAD,
  170.                         LA_UBYTE,    &Attribute[TEXTATTR_INVERSE],
  171.                     TAG_DONE);
  172.  
  173.                     LT_EndGroup(Handle);
  174.                 }
  175.  
  176.                 LT_EndGroup(Handle);
  177.             }
  178.  
  179.             LT_New(Handle,
  180.                 LA_Type,VERTICAL_KIND,
  181.             TAG_DONE);
  182.             {
  183.                 LT_New(Handle,
  184.                     LA_Type,    XBAR_KIND,
  185.                     LAXB_FullSize,    TRUE,
  186.                 TAG_DONE);
  187.  
  188.                 LT_EndGroup(Handle);
  189.             }
  190.  
  191.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  192.                 LAGR_SameSize,    TRUE,
  193.                 LAGR_Spread,    TRUE,
  194.             TAG_DONE);
  195.             {
  196.                 LT_New(Handle,
  197.                     LA_Type,    BUTTON_KIND,
  198.                     LA_LabelID,    MSG_GLOBAL_USE_GAD,
  199.                     LA_ID,        GAD_USE,
  200.                     LABT_ReturnKey,    TRUE,
  201.                     LABT_ExtraFat,    TRUE,
  202.                 TAG_DONE);
  203.  
  204.                 LT_New(Handle,
  205.                     LA_Type,    BUTTON_KIND,
  206.                     LA_LabelID,    MSG_GLOBAL_CANCEL_GAD,
  207.                     LA_ID,        GAD_CANCEL,
  208.                     LABT_EscKey,    TRUE,
  209.                     LABT_ExtraFat,    TRUE,
  210.                 TAG_DONE);
  211.  
  212.                 LT_EndGroup(Handle);
  213.             }
  214.  
  215.             LT_EndGroup(Handle);
  216.         }
  217.  
  218.         if(PanelWindow = LT_Layout(Handle,LocaleString(MSG_PENPANEL_SCREEN_DRAWING_PENS_TXT),NULL,0,0,IDCMP_CLOSEWINDOW,0,
  219.             LAWN_HelpHook,        &GuideHook,
  220.             LAWN_Parent,        Window,
  221.             WA_DepthGadget,        TRUE,
  222.             WA_CloseGadget,        TRUE,
  223.             WA_DragBar,        TRUE,
  224.             WA_RMBTrap,        TRUE,
  225.             WA_Activate,        TRUE,
  226.         TAG_DONE))
  227.         {
  228.             struct IntuiMessage    *Message;
  229.             BOOLEAN             Done = FALSE;
  230.             ULONG             MsgClass,
  231.                          MsgQualifier;
  232.             UWORD             MsgCode;
  233.             struct Gadget        *MsgGadget;
  234.  
  235.             PushWindow(PanelWindow);
  236.  
  237.             LT_ShowWindow(Handle,TRUE);
  238.  
  239.             GuideContext(CONTEXT_TEXTPEN_PANEL);
  240.  
  241.             do
  242.             {
  243.                 if(Wait(PORTMASK(PanelWindow -> UserPort) | SIG_BREAK) & SIG_BREAK)
  244.                     break;
  245.  
  246.                 while(Message = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort))
  247.                 {
  248.                     MsgClass    = Message -> Class;
  249.                     MsgQualifier    = Message -> Qualifier;
  250.                     MsgCode        = Message -> Code;
  251.                     MsgGadget    = (struct Gadget *)Message -> IAddress;
  252.  
  253.                     GT_ReplyIMsg(Message);
  254.  
  255.                     LT_HandleInput(Handle,MsgQualifier,&MsgClass,&MsgCode,&MsgGadget);
  256.  
  257.                     if(MsgClass == IDCMP_CLOSEWINDOW)
  258.                         Done = TRUE;
  259.  
  260.                     if(MsgClass == IDCMP_GADGETUP)
  261.                     {
  262.                         switch(MsgGadget -> GadgetID)
  263.                         {
  264.                             case GAD_USE:
  265.  
  266.                                 CopyMem(Pen,Config -> EmulationConfig -> Pens,sizeof(Pen));
  267.                                 CopyMem(Attribute,Config -> EmulationConfig -> Attributes,sizeof(Attribute));
  268.  
  269.                                 Result = Done = TRUE;
  270.                                 break;
  271.  
  272.                             case GAD_CANCEL:
  273.  
  274.                                 Done = TRUE;
  275.                                 break;
  276.                         }
  277.                     }
  278.                 }
  279.             }
  280.             while(!Done);
  281.  
  282.             PopWindow();
  283.         }
  284.  
  285.         LT_DeleteHandle(Handle);
  286.     }
  287.  
  288.     return(Result);
  289. }
  290.  
  291. BYTE __regargs
  292. EmulationPanel(struct Configuration *LocalConfig,BYTE *Default)
  293. {
  294.     STATIC LONG PageTitleID[5] =
  295.     {
  296.         MSG_V36_0034,
  297.         MSG_V36_0035,
  298.         MSG_V36_0036,
  299.         MSG_PENPANEL_DRAWING_PENS_TXT,
  300.         -1
  301.     };
  302.  
  303.     STATIC BYTE         InitialPage = 0;
  304.  
  305.     struct LayoutHandle    *Handle;
  306.     BYTE             Changed = FALSE,
  307.                  Cancel = FALSE;
  308.     BOOL             PenChoices;
  309.     WORD             Depth,
  310.                  CurrentDepth;
  311.     STRPTR             PageTitle[5];
  312.  
  313.     LocalizeStringTable(PageTitle,PageTitleID);
  314.  
  315.     SaveConfig(LocalConfig,PrivateConfig);
  316.  
  317.     /* ALWAYS */
  318.     {
  319.         struct Configuration *Ptr;
  320.  
  321.         if(LocalConfig -> ScreenConfig)
  322.             Ptr = LocalConfig;
  323.         else
  324.             Ptr = Config;
  325.  
  326.         if((Ptr -> ScreenConfig -> UseWorkbench || Ptr -> ScreenConfig -> ShareScreen) && !Kick30)
  327.             PenChoices = FALSE;
  328.         else
  329.             PenChoices = TRUE;
  330.  
  331.         switch(Ptr -> ScreenConfig -> ColourMode)
  332.         {
  333.             case COLOUR_MONO:
  334.  
  335.                 Depth = 1;
  336.                 break;
  337.  
  338.             case COLOUR_AMIGA:
  339.  
  340.                 Depth = 2;
  341.                 break;
  342.  
  343.             case COLOUR_EIGHT:
  344.  
  345.                 Depth = 3;
  346.                 break;
  347.  
  348.             case COLOUR_SIXTEEN:
  349.  
  350.                 Depth = 4;
  351.                 break;
  352.         }
  353.     }
  354.  
  355.     switch(Config -> ScreenConfig -> ColourMode)
  356.     {
  357.         case COLOUR_MONO:
  358.  
  359.             CurrentDepth = 1;
  360.             break;
  361.  
  362.         case COLOUR_AMIGA:
  363.  
  364.             CurrentDepth = 2;
  365.             break;
  366.  
  367.         case COLOUR_EIGHT:
  368.  
  369.             CurrentDepth = 3;
  370.             break;
  371.  
  372.         case COLOUR_SIXTEEN:
  373.  
  374.             CurrentDepth = 4;
  375.             break;
  376.     }
  377.  
  378.     if(Depth != CurrentDepth || !PenChoices)
  379.     {
  380.         PageTitle[3] = NULL;
  381.  
  382.         if(InitialPage == 4)
  383.             InitialPage = 3;
  384.     }
  385.     else
  386.         PageTitle[4] = NULL;
  387.  
  388.     if(Handle = LT_CreateHandleTags(Window -> WScreen,
  389.         LH_LocaleHook,    &LocaleHook,
  390.         LH_ExactClone,    TRUE,
  391.     TAG_DONE))
  392.     {
  393.         struct Window *PanelWindow;
  394.  
  395.         LT_New(Handle,
  396.             LA_Type,    VERTICAL_KIND,
  397.         TAG_DONE);
  398.         {
  399.             LT_New(Handle,
  400.                 LA_Type,VERTICAL_KIND,
  401.             TAG_DONE);
  402.             {
  403.                 LT_New(Handle,
  404.                     LA_Type,    CYCLE_KIND,
  405.                     LA_ID,        GAD_PAGER,
  406.                     LA_LabelID,    MSG_XFER_PAGE_TXT,
  407.                     GTCY_Labels,    PageTitle,
  408.                     LACY_AutoPageID,GAD_PAGEGROUP,
  409.                     LACY_TabKey,    TRUE,
  410.                     LA_BYTE,    &InitialPage,
  411.                 TAG_DONE);
  412.  
  413.                 LT_EndGroup(Handle);
  414.             }
  415.  
  416.             LT_New(Handle,
  417.                 LA_Type,    VERTICAL_KIND,
  418.                 LA_ID,        GAD_PAGEGROUP,
  419.                 LAGR_Frame,    TRUE,
  420.                 LAGR_ActivePage,InitialPage,
  421.             TAG_DONE);
  422.             {
  423.                 LT_New(Handle,
  424.                     LA_Type,    VERTICAL_KIND,
  425.                 TAG_DONE);
  426.                 {
  427.                     LT_New(Handle,
  428.                         LA_Type,    CYCLE_KIND,
  429.                         LA_LabelID,    MSG_EMULATIONPANEL_CURSOR_KEYS_GAD,
  430.                         LA_BYTE,    &LocalConfig -> EmulationConfig -> CursorMode,
  431.                         LACY_FirstLabel,MSG_EMULATIONPANEL_STANDARD_MODE_TXT,
  432.                         LACY_LastLabel,    MSG_EMULATIONPANEL_APPLICATION_MODE_TXT,
  433.                         LA_Chars,    20,
  434.                     TAG_DONE);
  435.  
  436.                     LT_New(Handle,
  437.                         LA_Type,    CHECKBOX_KIND,
  438.                         LA_LabelID,    MSG_LOCK_CURSOR_KEY_MODE_TXT,
  439.                         LA_BYTE,    &LocalConfig -> EmulationConfig -> CursorLocked,
  440.                     TAG_DONE);
  441.  
  442.                     LT_New(Handle,
  443.                         LA_Type,    XBAR_KIND,
  444.                     TAG_DONE);
  445.  
  446.                     LT_New(Handle,
  447.                         LA_Type,    CYCLE_KIND,
  448.                         LA_LabelID,    MSG_EMULATIONPANEL_NUMERIC_KEYPAD_GAD,
  449.                         LA_BYTE,    &LocalConfig -> EmulationConfig -> NumericMode,
  450.                         LACY_FirstLabel,MSG_EMULATIONPANEL_STANDARD_MODE_TXT,
  451.                         LACY_LastLabel,    MSG_EMULATIONPANEL_APPLICATION_MODE_TXT,
  452.                     TAG_DONE);
  453.  
  454.                     LT_New(Handle,
  455.                         LA_Type,    CHECKBOX_KIND,
  456.                         LA_LabelID,    MSG_V36_1820,
  457.                         LA_BYTE,    &LocalConfig -> EmulationConfig -> KeysLocked,
  458.                     TAG_DONE);
  459.  
  460.                     LT_New(Handle,
  461.                         LA_Type,    XBAR_KIND,
  462.                     TAG_DONE);
  463.  
  464.                     LT_New(Handle,
  465.                         LA_Type,    CHECKBOX_KIND,
  466.                         LA_LabelID,    MSG_EMULATIONPANEL_SWAP_BS_AND_DEL_GAD,
  467.                         LA_BYTE,    &LocalConfig -> EmulationConfig -> SwapBSDelete,
  468.                     TAG_DONE);
  469.  
  470.                     LT_EndGroup(Handle);
  471.                 }
  472.  
  473.                 LT_New(Handle,
  474.                     LA_Type,    HORIZONTAL_KIND,
  475.                 TAG_DONE);
  476.                 {
  477.                     LT_New(Handle,
  478.                         LA_Type,    VERTICAL_KIND,
  479.                     TAG_DONE);
  480.                     {
  481.                         LT_New(Handle,
  482.                             LA_Type,    CHECKBOX_KIND,
  483.                             LA_LabelID,    MSG_EMULATIONPANEL_WRAP_CURSOR_MOVES_GAD,
  484.                             LA_BYTE,    &LocalConfig -> EmulationConfig -> CursorWrap,
  485.                         TAG_DONE);
  486.  
  487.                         LT_New(Handle,
  488.                             LA_Type,    CHECKBOX_KIND,
  489.                             LA_LabelID,    MSG_EMULATIONPANEL_WRAP_CHARACTERS_GAD,
  490.                             LA_BYTE,    &LocalConfig -> EmulationConfig -> LineWrap,
  491.                         TAG_DONE);
  492.  
  493.                         LT_New(Handle,
  494.                             LA_Type,    CHECKBOX_KIND,
  495.                             LA_LabelID,    MSG_LOCK_WRAPPING_GAD,
  496.                             LA_BYTE,    &LocalConfig -> EmulationConfig -> LockWrapping,
  497.                         TAG_DONE);
  498.  
  499.                         LT_New(Handle,
  500.                             LA_Type,    CHECKBOX_KIND,
  501.                             LA_LabelID,    MSG_EMULATIONPANEL_INSERT_MODE_GAD,
  502.                             LA_BYTE,    &LocalConfig -> EmulationConfig -> InsertMode,
  503.                         TAG_DONE);
  504.  
  505.                         LT_New(Handle,
  506.                             LA_Type,    CHECKBOX_KIND,
  507.                             LA_LabelID,    MSG_EMULATIONPANEL_NEW_LINE_MODE_GAD,
  508.                             LA_BYTE,    &LocalConfig -> EmulationConfig -> NewLineMode,
  509.                         TAG_DONE);
  510.  
  511.                         LT_EndGroup(Handle);
  512.                     }
  513.  
  514.                     LT_New(Handle,
  515.                         LA_Type,    VERTICAL_KIND,
  516.                     TAG_DONE);
  517.                     {
  518.                         LT_New(Handle,
  519.                             LA_Type,    CHECKBOX_KIND,
  520.                             LA_LabelID,    MSG_EMULATIONPANEL_CLS_RESETS_CURSOR_GAD,
  521.                             LA_BYTE,    &LocalConfig -> EmulationConfig -> CLSResetsCursor,
  522.                         TAG_DONE);
  523.  
  524.                         LT_New(Handle,
  525.                             LA_Type,    CHECKBOX_KIND,
  526.                             LA_LabelID,    MSG_EMULATIONPANEL_PRINTER_CONTROL_GAD,
  527.                             LA_BYTE,    &LocalConfig -> EmulationConfig -> PrinterEnabled,
  528.                         TAG_DONE);
  529.  
  530.                         LT_New(Handle,
  531.                             LA_Type,    CHECKBOX_KIND,
  532.                             LA_LabelID,    MSG_LOCK_STYLE_GAD,
  533.                             LA_BYTE,    &LocalConfig -> EmulationConfig -> LockStyle,
  534.                         TAG_DONE);
  535.  
  536.                         LT_New(Handle,
  537.                             LA_Type,    CHECKBOX_KIND,
  538.                             LA_LabelID,    MSG_LOCK_COLOUR_GAD,
  539.                             LA_BYTE,    &LocalConfig -> EmulationConfig -> LockColour,
  540.                         TAG_DONE);
  541.  
  542.                         LT_EndGroup(Handle);
  543.                     }
  544.  
  545.                     LT_EndGroup(Handle);
  546.                 }
  547.  
  548.                 LT_New(Handle,
  549.                     LA_Type,    VERTICAL_KIND,
  550.                 TAG_DONE);
  551.                 {
  552. /*    OBSOLETE!
  553.                     LT_New(Handle,
  554.                         LA_Type,    CYCLE_KIND,
  555.                         LA_LabelID,    MSG_EMULATIONPANEL_FONT_SCALE_GAD,
  556.                         LA_BYTE,    &LocalConfig -> EmulationConfig -> FontScale,
  557.                         LACY_FirstLabel,MSG_EMULATIONPANEL_NORMAL_SCALE_TXT,
  558.                         LACY_LastLabel,    MSG_EMULATIONPANEL_HALF_WIDTH_TXT,
  559.                         LA_Chars,    20,
  560.                     TAG_DONE);
  561. */
  562.                     LT_New(Handle,
  563.                         LA_Type,    CHECKBOX_KIND,
  564.                         LA_LabelID,    MSG_LOCK_FONT_MODE_TXT,
  565.                         LA_BYTE,    &LocalConfig -> EmulationConfig -> FontLocked,
  566.                     TAG_DONE);
  567.  
  568.                     LT_New(Handle,
  569.                         LA_Type,    CYCLE_KIND,
  570.                         LA_LabelID,    MSG_EMULATIONPANEL_SMOOTH_SCROLLING_GAD,
  571.                         LA_BYTE,    &LocalConfig -> EmulationConfig -> ScrollMode,
  572.                         LACY_FirstLabel,MSG_EMULATIONPANEL_JUMP_TXT,
  573.                         LACY_LastLabel,    MSG_EMULATIONPANEL_SMOOTH_TXT,
  574.                     TAG_DONE);
  575.  
  576.                     LT_New(Handle,
  577.                         LA_Type,    CYCLE_KIND,
  578.                         LA_LabelID,    MSG_EMULATIONPANEL_DESTRUCTIVE_BACKSPACE_GAD,
  579.                         LA_BYTE,    &LocalConfig -> EmulationConfig -> DestructiveBackspace,
  580.                         LACY_FirstLabel,MSG_DESTRUCTIVE_BS_OFF_TXT,
  581.                         LACY_LastLabel,    MSG_DESTRUCTIVE_BS_SHIFT_TXT,
  582.                     TAG_DONE);
  583.  
  584.                     LT_New(Handle,
  585.                         LA_Type,    STRING_KIND,
  586.                         LA_LabelID,    MSG_EMULATIONPANEL_ANSWERBACK_MESSAGE_GAD,
  587.                         LA_STRPTR,    LocalConfig -> EmulationConfig -> AnswerBack,
  588.                         GTST_MaxChars,    79,
  589.                     TAG_DONE);
  590. /*
  591.                     LT_New(Handle,
  592.                         LA_Type,        INTEGER_KIND,
  593.                         LA_LabelID,        MSG_EMULATIONPANEL_PRESCROLL_TXT,
  594.                         LA_UBYTE,        &LocalConfig -> EmulationConfig -> MaxScroll,
  595.                         LAIN_Min,        0,
  596.                         LAIN_Max,        255,
  597.                         LA_ID,            GAD_SCROLL,
  598.                         LAIN_UseIncrementers,    TRUE,
  599.                         GTIN_MaxChars,        3,
  600.                     TAG_DONE);
  601. */
  602.                     LT_New(Handle,
  603.                         LA_Type,        INTEGER_KIND,
  604.                         LA_LabelID,        MSG_EMULATIONPANEL_JUMP_SCROLL_TXT,
  605.                         LA_UBYTE,        &LocalConfig -> EmulationConfig -> MaxJump,
  606.                         LAIN_Min,        0,
  607.                         LAIN_Max,        255,
  608.                         LA_ID,            GAD_JUMP_SCROLL,
  609.                         LAIN_UseIncrementers,    TRUE,
  610.                         GTIN_MaxChars,        3,
  611.                     TAG_DONE);
  612.  
  613.                     LT_EndGroup(Handle);
  614.                 }
  615.  
  616.                 if(PageTitle[3])
  617.                 {
  618.                     LT_New(Handle,
  619.                         LA_Type,    VERTICAL_KIND,
  620.                     TAG_DONE);
  621.                     {
  622.                         LT_New(Handle,
  623.                             LA_Type,    VERTICAL_KIND,
  624.                         TAG_DONE);
  625.                         {
  626.                             LT_New(Handle,
  627.                                 LA_Type,    CHECKBOX_KIND,
  628.                                 LA_LabelID,    MSG_PENPANEL_STANDARDPENS_TXT,
  629.                                 LA_ID,        GAD_STDPENS,
  630.                                 LA_BYTE,    &LocalConfig -> EmulationConfig -> UseStandardPens,
  631.                             TAG_DONE);
  632.  
  633.                             LT_EndGroup(Handle);
  634.                         }
  635.  
  636.                         LT_New(Handle,
  637.                             LA_Type,    VERTICAL_KIND,
  638.                         TAG_DONE);
  639.                         {
  640.                             LT_New(Handle,
  641.                                 LA_Type,    BUTTON_KIND,
  642.                                 LA_LabelID,    MSG_PENPANEL_EDITPENS_TXT,
  643.                                 LA_ID,        GAD_EDITPENS,
  644.                                 GA_Disabled,    LocalConfig -> EmulationConfig -> UseStandardPens,
  645.                             TAG_DONE);
  646.  
  647.                             LT_EndGroup(Handle);
  648.                         }
  649.  
  650.                         LT_EndGroup(Handle);
  651.                     }
  652.                 }
  653.  
  654.                 LT_EndGroup(Handle);
  655.             }
  656.  
  657.             LT_New(Handle,
  658.                 LA_Type,VERTICAL_KIND,
  659.             TAG_DONE);
  660.             {
  661.                 LT_New(Handle,
  662.                     LA_Type,    XBAR_KIND,
  663.                     LAXB_FullSize,    TRUE,
  664.                 TAG_DONE);
  665.  
  666.                 LT_EndGroup(Handle);
  667.             }
  668.  
  669.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  670.                 LAGR_SameSize,    TRUE,
  671.                 LAGR_Spread,    TRUE,
  672.             TAG_DONE);
  673.             {
  674.                 LT_New(Handle,
  675.                     LA_Type,    BUTTON_KIND,
  676.                     LA_LabelID,    MSG_GLOBAL_USE_GAD,
  677.                     LA_ID,        GAD_USE,
  678.                     LABT_ReturnKey,    TRUE,
  679.                     LABT_ExtraFat,    TRUE,
  680.                 TAG_DONE);
  681.  
  682.                 if(Default)
  683.                 {
  684.                     LT_New(Handle,
  685.                         LA_Type,    BUTTON_KIND,
  686.                         LA_LabelID,    MSG_GLOBAL_DEFAULT_GAD,
  687.                         LA_ID,        GAD_DEFAULT,
  688.                         LABT_ExtraFat,    TRUE,
  689.                     TAG_DONE);
  690.                 }
  691.  
  692.                 LT_New(Handle,
  693.                     LA_Type,    BUTTON_KIND,
  694.                     LA_LabelID,    MSG_GLOBAL_CANCEL_GAD,
  695.                     LA_ID,        GAD_CANCEL,
  696.                     LABT_EscKey,    TRUE,
  697.                     LABT_ExtraFat,    TRUE,
  698.                 TAG_DONE);
  699.  
  700.                 LT_EndGroup(Handle);
  701.             }
  702.  
  703.             LT_EndGroup(Handle);
  704.         }
  705.  
  706.         if(PanelWindow = LT_Layout(Handle,LocaleString(MSG_EMULATIONPANEL_EMULATION_PREFERENCES_TXT),NULL,0,0,IDCMP_CLOSEWINDOW,0,
  707.             LAWN_HelpHook,        &GuideHook,
  708.             LAWN_Parent,        Window,
  709.             WA_DepthGadget,        TRUE,
  710.             WA_CloseGadget,        TRUE,
  711.             WA_DragBar,        TRUE,
  712.             WA_RMBTrap,        TRUE,
  713.             WA_Activate,        TRUE,
  714.         TAG_DONE))
  715.         {
  716.             struct IntuiMessage    *Message;
  717.             BOOLEAN             Done = FALSE;
  718.             ULONG             MsgClass,
  719.                          MsgQualifier;
  720.             UWORD             MsgCode;
  721.             struct Gadget        *MsgGadget;
  722.  
  723.             GuideContext(CONTEXT_EMULATION);
  724.  
  725.             PushWindow(PanelWindow);
  726.  
  727.             LT_ShowWindow(Handle,TRUE);
  728.  
  729.             do
  730.             {
  731.                 if(Wait(PORTMASK(PanelWindow -> UserPort) | SIG_BREAK) & SIG_BREAK)
  732.                 {
  733.                     SaveConfig(PrivateConfig,LocalConfig);
  734.  
  735.                     break;
  736.                 }
  737.  
  738.                 while(Message = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort))
  739.                 {
  740.                     MsgClass    = Message -> Class;
  741.                     MsgQualifier    = Message -> Qualifier;
  742.                     MsgCode        = Message -> Code;
  743.                     MsgGadget    = (struct Gadget *)Message -> IAddress;
  744.  
  745.                     GT_ReplyIMsg(Message);
  746.  
  747.                     LT_HandleInput(Handle,MsgQualifier,&MsgClass,&MsgCode,&MsgGadget);
  748.  
  749.                     if(MsgClass == IDCMP_CLOSEWINDOW)
  750.                     {
  751.                         SaveConfig(PrivateConfig,LocalConfig);
  752.  
  753.                         Done = TRUE;
  754.                     }
  755.  
  756.                     if(MsgClass == IDCMP_GADGETUP)
  757.                     {
  758.                         switch(MsgGadget -> GadgetID)
  759.                         {
  760.                             case GAD_STDPENS:
  761.  
  762.                                 LT_SetAttributes(Handle,GAD_EDITPENS,
  763.                                     GA_Disabled,    MsgCode,
  764.                                 TAG_DONE);
  765.  
  766.                                 break;
  767.  
  768.                             case GAD_EDITPENS:
  769.  
  770.                                 LT_LockWindow(PanelWindow);
  771.  
  772.                                 PenPanel(PanelWindow,LocalConfig,Depth);
  773.  
  774.                                 LT_UnlockWindow(PanelWindow);
  775.  
  776.                                 break;
  777.  
  778.                             case GAD_USE:
  779.  
  780.                                 LT_UpdateStrings(Handle);
  781.  
  782.                                 Changed = TRUE;
  783.  
  784.                                 Done = TRUE;
  785.                                 break;
  786.  
  787.                             case GAD_CANCEL:
  788.  
  789.                                 SaveConfig(PrivateConfig,LocalConfig);
  790.  
  791.                                 Cancel = Done = TRUE;
  792.                                 break;
  793.  
  794.                             case GAD_DEFAULT:
  795.  
  796.                                 *Default = TRUE;
  797.  
  798.                                 Done = TRUE;
  799.                                 break;
  800.                         }
  801.                     }
  802.                 }
  803.             }
  804.             while(!Done);
  805.  
  806.             PopWindow();
  807.         }
  808.  
  809.         LT_DeleteHandle(Handle);
  810.     }
  811.  
  812.     ScreenSizeStuff();
  813.  
  814.     if(Default)
  815.         return((BYTE)(!Cancel));
  816.     else
  817.         return(Changed);
  818. }
  819.